require(ursa)
Loading required package: ursa
knit <- ursa:::.isKnitr()
simplify <- 4
g1 <- regrid(bbox=c(0,-90,360,90),crs=NA,res=simplify*2.5/60)
ursa_crs(g1) <- 4326
g1
List of 9
 $ columns: int 2160
 $ rows   : int 1080
 $ resx   : num 0.167
 $ resy   : num 0.167
 $ minx   : num 0
 $ maxx   : num 360
 $ miny   : num -90
 $ maxy   : num 90
 $ crs    : chr "+init=epsg:4326"
 - attr(*, "class")= chr ".ursaGrid"

Размер растра:

  lines samples 
   1080    2160 
session_grid(g1)
world <- ursa(1L)
if (knit)
   display(world)

n <- 32000/simplify

Число точек в контурах/полигонов водоемов:

[1] 8000
lon <- runif(n,min=0,max=360)
lat <- runif(n,min=-85,max=85)
hydro <- ursa:::spatialize(data.frame(lon=lon,lat=lat,value=2L),crs=4326)
session_grid(g1)
spatial_coordinates(hydro) |> summary()
       x                  y           
 Min.   :  0.0262   Min.   :-84.9843  
 1st Qu.: 90.9261   1st Qu.:-41.7339  
 Median :182.1642   Median :  1.1218  
 Mean   :180.6053   Mean   :  0.8342  
 3rd Qu.:271.9678   3rd Qu.: 43.4293  
 Max.   :359.8630   Max.   : 84.9810  
if (knit)
   glance(hydro,border=0)

ursa:::.elapsedTime("distance -- start")
*** render.R: distance -- start: 5.30(5.00) seconds ***
res <- ursa:::.dist2(world,hydro,summarize=FALSE
                    ,spherical=TRUE
                    ,verbose=!ursa:::.isKnitr())["dist"]
ursa:::.elapsedTime("distance -- finish")
*** render.R: distance -- finish: 1037.15(1031.85) seconds ***
res
    name  mean      sd       sum     min     max       n nNA
[2] dist 344.4 115.791 803415905 8.39754 745.864 2332800   0
display(res["dist"])